{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 分类训练"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "   * 机器学习的HelloWorld ，一个新的分类算法，都会看看在MNIST的上的执行结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "b'\\x00\\x00\\x00\\x02'"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import struct\n",
    "#struct.pack('>B', 2) #B = byte 占一个字节\n",
    "struct.pack('>i', 2) # i = int 高位字节"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(2051, 60000, 28, 28)\n",
      "47040000\n"
     ]
    }
   ],
   "source": [
    "import struct\n",
    "with open('./MNIST_data/train-images-idx3-ubyte', 'rb') as f:\n",
    "    buffer = f.read(4 * 4)  #4个int\n",
    "    head = struct.unpack('>iiii',buffer)\n",
    "    print(head)\n",
    "    length = head[1] * head[2] * head[3]\n",
    "    print(length)\n",
    "    buffer = f.read(length)\n",
    "    #print(buffer)\n",
    "    data = struct.unpack('>{}B'.format(length), buffer)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "47040000"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tuple"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "imgs = np.reshape(data, (head[1], head[2], head[3]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 28, 28)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "imgs.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "for i in range(5):\n",
    "    plt.imshow(imgs[i], cmap = 'gray')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.datasets import fetch_openml\n",
    "mnist = fetch_openml('mnist_784')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'data': array([[0., 0., 0., ..., 0., 0., 0.],\n",
       "        [0., 0., 0., ..., 0., 0., 0.],\n",
       "        [0., 0., 0., ..., 0., 0., 0.],\n",
       "        ...,\n",
       "        [0., 0., 0., ..., 0., 0., 0.],\n",
       "        [0., 0., 0., ..., 0., 0., 0.],\n",
       "        [0., 0., 0., ..., 0., 0., 0.]]),\n",
       " 'target': array(['5', '0', '4', ..., '4', '5', '6'], dtype=object),\n",
       " 'frame': None,\n",
       " 'categories': {},\n",
       " 'feature_names': ['pixel1',\n",
       "  'pixel2',\n",
       "  'pixel3',\n",
       "  'pixel4',\n",
       "  'pixel5',\n",
       "  'pixel6',\n",
       "  'pixel7',\n",
       "  'pixel8',\n",
       "  'pixel9',\n",
       "  'pixel10',\n",
       "  'pixel11',\n",
       "  'pixel12',\n",
       "  'pixel13',\n",
       "  'pixel14',\n",
       "  'pixel15',\n",
       "  'pixel16',\n",
       "  'pixel17',\n",
       "  'pixel18',\n",
       "  'pixel19',\n",
       "  'pixel20',\n",
       "  'pixel21',\n",
       "  'pixel22',\n",
       "  'pixel23',\n",
       "  'pixel24',\n",
       "  'pixel25',\n",
       "  'pixel26',\n",
       "  'pixel27',\n",
       "  'pixel28',\n",
       "  'pixel29',\n",
       "  'pixel30',\n",
       "  'pixel31',\n",
       "  'pixel32',\n",
       "  'pixel33',\n",
       "  'pixel34',\n",
       "  'pixel35',\n",
       "  'pixel36',\n",
       "  'pixel37',\n",
       "  'pixel38',\n",
       "  'pixel39',\n",
       "  'pixel40',\n",
       "  'pixel41',\n",
       "  'pixel42',\n",
       "  'pixel43',\n",
       "  'pixel44',\n",
       "  'pixel45',\n",
       "  'pixel46',\n",
       "  'pixel47',\n",
       "  'pixel48',\n",
       "  'pixel49',\n",
       "  'pixel50',\n",
       "  'pixel51',\n",
       "  'pixel52',\n",
       "  'pixel53',\n",
       "  'pixel54',\n",
       "  'pixel55',\n",
       "  'pixel56',\n",
       "  'pixel57',\n",
       "  'pixel58',\n",
       "  'pixel59',\n",
       "  'pixel60',\n",
       "  'pixel61',\n",
       "  'pixel62',\n",
       "  'pixel63',\n",
       "  'pixel64',\n",
       "  'pixel65',\n",
       "  'pixel66',\n",
       "  'pixel67',\n",
       "  'pixel68',\n",
       "  'pixel69',\n",
       "  'pixel70',\n",
       "  'pixel71',\n",
       "  'pixel72',\n",
       "  'pixel73',\n",
       "  'pixel74',\n",
       "  'pixel75',\n",
       "  'pixel76',\n",
       "  'pixel77',\n",
       "  'pixel78',\n",
       "  'pixel79',\n",
       "  'pixel80',\n",
       "  'pixel81',\n",
       "  'pixel82',\n",
       "  'pixel83',\n",
       "  'pixel84',\n",
       "  'pixel85',\n",
       "  'pixel86',\n",
       "  'pixel87',\n",
       "  'pixel88',\n",
       "  'pixel89',\n",
       "  'pixel90',\n",
       "  'pixel91',\n",
       "  'pixel92',\n",
       "  'pixel93',\n",
       "  'pixel94',\n",
       "  'pixel95',\n",
       "  'pixel96',\n",
       "  'pixel97',\n",
       "  'pixel98',\n",
       "  'pixel99',\n",
       "  'pixel100',\n",
       "  'pixel101',\n",
       "  'pixel102',\n",
       "  'pixel103',\n",
       "  'pixel104',\n",
       "  'pixel105',\n",
       "  'pixel106',\n",
       "  'pixel107',\n",
       "  'pixel108',\n",
       "  'pixel109',\n",
       "  'pixel110',\n",
       "  'pixel111',\n",
       "  'pixel112',\n",
       "  'pixel113',\n",
       "  'pixel114',\n",
       "  'pixel115',\n",
       "  'pixel116',\n",
       "  'pixel117',\n",
       "  'pixel118',\n",
       "  'pixel119',\n",
       "  'pixel120',\n",
       "  'pixel121',\n",
       "  'pixel122',\n",
       "  'pixel123',\n",
       "  'pixel124',\n",
       "  'pixel125',\n",
       "  'pixel126',\n",
       "  'pixel127',\n",
       "  'pixel128',\n",
       "  'pixel129',\n",
       "  'pixel130',\n",
       "  'pixel131',\n",
       "  'pixel132',\n",
       "  'pixel133',\n",
       "  'pixel134',\n",
       "  'pixel135',\n",
       "  'pixel136',\n",
       "  'pixel137',\n",
       "  'pixel138',\n",
       "  'pixel139',\n",
       "  'pixel140',\n",
       "  'pixel141',\n",
       "  'pixel142',\n",
       "  'pixel143',\n",
       "  'pixel144',\n",
       "  'pixel145',\n",
       "  'pixel146',\n",
       "  'pixel147',\n",
       "  'pixel148',\n",
       "  'pixel149',\n",
       "  'pixel150',\n",
       "  'pixel151',\n",
       "  'pixel152',\n",
       "  'pixel153',\n",
       "  'pixel154',\n",
       "  'pixel155',\n",
       "  'pixel156',\n",
       "  'pixel157',\n",
       "  'pixel158',\n",
       "  'pixel159',\n",
       "  'pixel160',\n",
       "  'pixel161',\n",
       "  'pixel162',\n",
       "  'pixel163',\n",
       "  'pixel164',\n",
       "  'pixel165',\n",
       "  'pixel166',\n",
       "  'pixel167',\n",
       "  'pixel168',\n",
       "  'pixel169',\n",
       "  'pixel170',\n",
       "  'pixel171',\n",
       "  'pixel172',\n",
       "  'pixel173',\n",
       "  'pixel174',\n",
       "  'pixel175',\n",
       "  'pixel176',\n",
       "  'pixel177',\n",
       "  'pixel178',\n",
       "  'pixel179',\n",
       "  'pixel180',\n",
       "  'pixel181',\n",
       "  'pixel182',\n",
       "  'pixel183',\n",
       "  'pixel184',\n",
       "  'pixel185',\n",
       "  'pixel186',\n",
       "  'pixel187',\n",
       "  'pixel188',\n",
       "  'pixel189',\n",
       "  'pixel190',\n",
       "  'pixel191',\n",
       "  'pixel192',\n",
       "  'pixel193',\n",
       "  'pixel194',\n",
       "  'pixel195',\n",
       "  'pixel196',\n",
       "  'pixel197',\n",
       "  'pixel198',\n",
       "  'pixel199',\n",
       "  'pixel200',\n",
       "  'pixel201',\n",
       "  'pixel202',\n",
       "  'pixel203',\n",
       "  'pixel204',\n",
       "  'pixel205',\n",
       "  'pixel206',\n",
       "  'pixel207',\n",
       "  'pixel208',\n",
       "  'pixel209',\n",
       "  'pixel210',\n",
       "  'pixel211',\n",
       "  'pixel212',\n",
       "  'pixel213',\n",
       "  'pixel214',\n",
       "  'pixel215',\n",
       "  'pixel216',\n",
       "  'pixel217',\n",
       "  'pixel218',\n",
       "  'pixel219',\n",
       "  'pixel220',\n",
       "  'pixel221',\n",
       "  'pixel222',\n",
       "  'pixel223',\n",
       "  'pixel224',\n",
       "  'pixel225',\n",
       "  'pixel226',\n",
       "  'pixel227',\n",
       "  'pixel228',\n",
       "  'pixel229',\n",
       "  'pixel230',\n",
       "  'pixel231',\n",
       "  'pixel232',\n",
       "  'pixel233',\n",
       "  'pixel234',\n",
       "  'pixel235',\n",
       "  'pixel236',\n",
       "  'pixel237',\n",
       "  'pixel238',\n",
       "  'pixel239',\n",
       "  'pixel240',\n",
       "  'pixel241',\n",
       "  'pixel242',\n",
       "  'pixel243',\n",
       "  'pixel244',\n",
       "  'pixel245',\n",
       "  'pixel246',\n",
       "  'pixel247',\n",
       "  'pixel248',\n",
       "  'pixel249',\n",
       "  'pixel250',\n",
       "  'pixel251',\n",
       "  'pixel252',\n",
       "  'pixel253',\n",
       "  'pixel254',\n",
       "  'pixel255',\n",
       "  'pixel256',\n",
       "  'pixel257',\n",
       "  'pixel258',\n",
       "  'pixel259',\n",
       "  'pixel260',\n",
       "  'pixel261',\n",
       "  'pixel262',\n",
       "  'pixel263',\n",
       "  'pixel264',\n",
       "  'pixel265',\n",
       "  'pixel266',\n",
       "  'pixel267',\n",
       "  'pixel268',\n",
       "  'pixel269',\n",
       "  'pixel270',\n",
       "  'pixel271',\n",
       "  'pixel272',\n",
       "  'pixel273',\n",
       "  'pixel274',\n",
       "  'pixel275',\n",
       "  'pixel276',\n",
       "  'pixel277',\n",
       "  'pixel278',\n",
       "  'pixel279',\n",
       "  'pixel280',\n",
       "  'pixel281',\n",
       "  'pixel282',\n",
       "  'pixel283',\n",
       "  'pixel284',\n",
       "  'pixel285',\n",
       "  'pixel286',\n",
       "  'pixel287',\n",
       "  'pixel288',\n",
       "  'pixel289',\n",
       "  'pixel290',\n",
       "  'pixel291',\n",
       "  'pixel292',\n",
       "  'pixel293',\n",
       "  'pixel294',\n",
       "  'pixel295',\n",
       "  'pixel296',\n",
       "  'pixel297',\n",
       "  'pixel298',\n",
       "  'pixel299',\n",
       "  'pixel300',\n",
       "  'pixel301',\n",
       "  'pixel302',\n",
       "  'pixel303',\n",
       "  'pixel304',\n",
       "  'pixel305',\n",
       "  'pixel306',\n",
       "  'pixel307',\n",
       "  'pixel308',\n",
       "  'pixel309',\n",
       "  'pixel310',\n",
       "  'pixel311',\n",
       "  'pixel312',\n",
       "  'pixel313',\n",
       "  'pixel314',\n",
       "  'pixel315',\n",
       "  'pixel316',\n",
       "  'pixel317',\n",
       "  'pixel318',\n",
       "  'pixel319',\n",
       "  'pixel320',\n",
       "  'pixel321',\n",
       "  'pixel322',\n",
       "  'pixel323',\n",
       "  'pixel324',\n",
       "  'pixel325',\n",
       "  'pixel326',\n",
       "  'pixel327',\n",
       "  'pixel328',\n",
       "  'pixel329',\n",
       "  'pixel330',\n",
       "  'pixel331',\n",
       "  'pixel332',\n",
       "  'pixel333',\n",
       "  'pixel334',\n",
       "  'pixel335',\n",
       "  'pixel336',\n",
       "  'pixel337',\n",
       "  'pixel338',\n",
       "  'pixel339',\n",
       "  'pixel340',\n",
       "  'pixel341',\n",
       "  'pixel342',\n",
       "  'pixel343',\n",
       "  'pixel344',\n",
       "  'pixel345',\n",
       "  'pixel346',\n",
       "  'pixel347',\n",
       "  'pixel348',\n",
       "  'pixel349',\n",
       "  'pixel350',\n",
       "  'pixel351',\n",
       "  'pixel352',\n",
       "  'pixel353',\n",
       "  'pixel354',\n",
       "  'pixel355',\n",
       "  'pixel356',\n",
       "  'pixel357',\n",
       "  'pixel358',\n",
       "  'pixel359',\n",
       "  'pixel360',\n",
       "  'pixel361',\n",
       "  'pixel362',\n",
       "  'pixel363',\n",
       "  'pixel364',\n",
       "  'pixel365',\n",
       "  'pixel366',\n",
       "  'pixel367',\n",
       "  'pixel368',\n",
       "  'pixel369',\n",
       "  'pixel370',\n",
       "  'pixel371',\n",
       "  'pixel372',\n",
       "  'pixel373',\n",
       "  'pixel374',\n",
       "  'pixel375',\n",
       "  'pixel376',\n",
       "  'pixel377',\n",
       "  'pixel378',\n",
       "  'pixel379',\n",
       "  'pixel380',\n",
       "  'pixel381',\n",
       "  'pixel382',\n",
       "  'pixel383',\n",
       "  'pixel384',\n",
       "  'pixel385',\n",
       "  'pixel386',\n",
       "  'pixel387',\n",
       "  'pixel388',\n",
       "  'pixel389',\n",
       "  'pixel390',\n",
       "  'pixel391',\n",
       "  'pixel392',\n",
       "  'pixel393',\n",
       "  'pixel394',\n",
       "  'pixel395',\n",
       "  'pixel396',\n",
       "  'pixel397',\n",
       "  'pixel398',\n",
       "  'pixel399',\n",
       "  'pixel400',\n",
       "  'pixel401',\n",
       "  'pixel402',\n",
       "  'pixel403',\n",
       "  'pixel404',\n",
       "  'pixel405',\n",
       "  'pixel406',\n",
       "  'pixel407',\n",
       "  'pixel408',\n",
       "  'pixel409',\n",
       "  'pixel410',\n",
       "  'pixel411',\n",
       "  'pixel412',\n",
       "  'pixel413',\n",
       "  'pixel414',\n",
       "  'pixel415',\n",
       "  'pixel416',\n",
       "  'pixel417',\n",
       "  'pixel418',\n",
       "  'pixel419',\n",
       "  'pixel420',\n",
       "  'pixel421',\n",
       "  'pixel422',\n",
       "  'pixel423',\n",
       "  'pixel424',\n",
       "  'pixel425',\n",
       "  'pixel426',\n",
       "  'pixel427',\n",
       "  'pixel428',\n",
       "  'pixel429',\n",
       "  'pixel430',\n",
       "  'pixel431',\n",
       "  'pixel432',\n",
       "  'pixel433',\n",
       "  'pixel434',\n",
       "  'pixel435',\n",
       "  'pixel436',\n",
       "  'pixel437',\n",
       "  'pixel438',\n",
       "  'pixel439',\n",
       "  'pixel440',\n",
       "  'pixel441',\n",
       "  'pixel442',\n",
       "  'pixel443',\n",
       "  'pixel444',\n",
       "  'pixel445',\n",
       "  'pixel446',\n",
       "  'pixel447',\n",
       "  'pixel448',\n",
       "  'pixel449',\n",
       "  'pixel450',\n",
       "  'pixel451',\n",
       "  'pixel452',\n",
       "  'pixel453',\n",
       "  'pixel454',\n",
       "  'pixel455',\n",
       "  'pixel456',\n",
       "  'pixel457',\n",
       "  'pixel458',\n",
       "  'pixel459',\n",
       "  'pixel460',\n",
       "  'pixel461',\n",
       "  'pixel462',\n",
       "  'pixel463',\n",
       "  'pixel464',\n",
       "  'pixel465',\n",
       "  'pixel466',\n",
       "  'pixel467',\n",
       "  'pixel468',\n",
       "  'pixel469',\n",
       "  'pixel470',\n",
       "  'pixel471',\n",
       "  'pixel472',\n",
       "  'pixel473',\n",
       "  'pixel474',\n",
       "  'pixel475',\n",
       "  'pixel476',\n",
       "  'pixel477',\n",
       "  'pixel478',\n",
       "  'pixel479',\n",
       "  'pixel480',\n",
       "  'pixel481',\n",
       "  'pixel482',\n",
       "  'pixel483',\n",
       "  'pixel484',\n",
       "  'pixel485',\n",
       "  'pixel486',\n",
       "  'pixel487',\n",
       "  'pixel488',\n",
       "  'pixel489',\n",
       "  'pixel490',\n",
       "  'pixel491',\n",
       "  'pixel492',\n",
       "  'pixel493',\n",
       "  'pixel494',\n",
       "  'pixel495',\n",
       "  'pixel496',\n",
       "  'pixel497',\n",
       "  'pixel498',\n",
       "  'pixel499',\n",
       "  'pixel500',\n",
       "  'pixel501',\n",
       "  'pixel502',\n",
       "  'pixel503',\n",
       "  'pixel504',\n",
       "  'pixel505',\n",
       "  'pixel506',\n",
       "  'pixel507',\n",
       "  'pixel508',\n",
       "  'pixel509',\n",
       "  'pixel510',\n",
       "  'pixel511',\n",
       "  'pixel512',\n",
       "  'pixel513',\n",
       "  'pixel514',\n",
       "  'pixel515',\n",
       "  'pixel516',\n",
       "  'pixel517',\n",
       "  'pixel518',\n",
       "  'pixel519',\n",
       "  'pixel520',\n",
       "  'pixel521',\n",
       "  'pixel522',\n",
       "  'pixel523',\n",
       "  'pixel524',\n",
       "  'pixel525',\n",
       "  'pixel526',\n",
       "  'pixel527',\n",
       "  'pixel528',\n",
       "  'pixel529',\n",
       "  'pixel530',\n",
       "  'pixel531',\n",
       "  'pixel532',\n",
       "  'pixel533',\n",
       "  'pixel534',\n",
       "  'pixel535',\n",
       "  'pixel536',\n",
       "  'pixel537',\n",
       "  'pixel538',\n",
       "  'pixel539',\n",
       "  'pixel540',\n",
       "  'pixel541',\n",
       "  'pixel542',\n",
       "  'pixel543',\n",
       "  'pixel544',\n",
       "  'pixel545',\n",
       "  'pixel546',\n",
       "  'pixel547',\n",
       "  'pixel548',\n",
       "  'pixel549',\n",
       "  'pixel550',\n",
       "  'pixel551',\n",
       "  'pixel552',\n",
       "  'pixel553',\n",
       "  'pixel554',\n",
       "  'pixel555',\n",
       "  'pixel556',\n",
       "  'pixel557',\n",
       "  'pixel558',\n",
       "  'pixel559',\n",
       "  'pixel560',\n",
       "  'pixel561',\n",
       "  'pixel562',\n",
       "  'pixel563',\n",
       "  'pixel564',\n",
       "  'pixel565',\n",
       "  'pixel566',\n",
       "  'pixel567',\n",
       "  'pixel568',\n",
       "  'pixel569',\n",
       "  'pixel570',\n",
       "  'pixel571',\n",
       "  'pixel572',\n",
       "  'pixel573',\n",
       "  'pixel574',\n",
       "  'pixel575',\n",
       "  'pixel576',\n",
       "  'pixel577',\n",
       "  'pixel578',\n",
       "  'pixel579',\n",
       "  'pixel580',\n",
       "  'pixel581',\n",
       "  'pixel582',\n",
       "  'pixel583',\n",
       "  'pixel584',\n",
       "  'pixel585',\n",
       "  'pixel586',\n",
       "  'pixel587',\n",
       "  'pixel588',\n",
       "  'pixel589',\n",
       "  'pixel590',\n",
       "  'pixel591',\n",
       "  'pixel592',\n",
       "  'pixel593',\n",
       "  'pixel594',\n",
       "  'pixel595',\n",
       "  'pixel596',\n",
       "  'pixel597',\n",
       "  'pixel598',\n",
       "  'pixel599',\n",
       "  'pixel600',\n",
       "  'pixel601',\n",
       "  'pixel602',\n",
       "  'pixel603',\n",
       "  'pixel604',\n",
       "  'pixel605',\n",
       "  'pixel606',\n",
       "  'pixel607',\n",
       "  'pixel608',\n",
       "  'pixel609',\n",
       "  'pixel610',\n",
       "  'pixel611',\n",
       "  'pixel612',\n",
       "  'pixel613',\n",
       "  'pixel614',\n",
       "  'pixel615',\n",
       "  'pixel616',\n",
       "  'pixel617',\n",
       "  'pixel618',\n",
       "  'pixel619',\n",
       "  'pixel620',\n",
       "  'pixel621',\n",
       "  'pixel622',\n",
       "  'pixel623',\n",
       "  'pixel624',\n",
       "  'pixel625',\n",
       "  'pixel626',\n",
       "  'pixel627',\n",
       "  'pixel628',\n",
       "  'pixel629',\n",
       "  'pixel630',\n",
       "  'pixel631',\n",
       "  'pixel632',\n",
       "  'pixel633',\n",
       "  'pixel634',\n",
       "  'pixel635',\n",
       "  'pixel636',\n",
       "  'pixel637',\n",
       "  'pixel638',\n",
       "  'pixel639',\n",
       "  'pixel640',\n",
       "  'pixel641',\n",
       "  'pixel642',\n",
       "  'pixel643',\n",
       "  'pixel644',\n",
       "  'pixel645',\n",
       "  'pixel646',\n",
       "  'pixel647',\n",
       "  'pixel648',\n",
       "  'pixel649',\n",
       "  'pixel650',\n",
       "  'pixel651',\n",
       "  'pixel652',\n",
       "  'pixel653',\n",
       "  'pixel654',\n",
       "  'pixel655',\n",
       "  'pixel656',\n",
       "  'pixel657',\n",
       "  'pixel658',\n",
       "  'pixel659',\n",
       "  'pixel660',\n",
       "  'pixel661',\n",
       "  'pixel662',\n",
       "  'pixel663',\n",
       "  'pixel664',\n",
       "  'pixel665',\n",
       "  'pixel666',\n",
       "  'pixel667',\n",
       "  'pixel668',\n",
       "  'pixel669',\n",
       "  'pixel670',\n",
       "  'pixel671',\n",
       "  'pixel672',\n",
       "  'pixel673',\n",
       "  'pixel674',\n",
       "  'pixel675',\n",
       "  'pixel676',\n",
       "  'pixel677',\n",
       "  'pixel678',\n",
       "  'pixel679',\n",
       "  'pixel680',\n",
       "  'pixel681',\n",
       "  'pixel682',\n",
       "  'pixel683',\n",
       "  'pixel684',\n",
       "  'pixel685',\n",
       "  'pixel686',\n",
       "  'pixel687',\n",
       "  'pixel688',\n",
       "  'pixel689',\n",
       "  'pixel690',\n",
       "  'pixel691',\n",
       "  'pixel692',\n",
       "  'pixel693',\n",
       "  'pixel694',\n",
       "  'pixel695',\n",
       "  'pixel696',\n",
       "  'pixel697',\n",
       "  'pixel698',\n",
       "  'pixel699',\n",
       "  'pixel700',\n",
       "  'pixel701',\n",
       "  'pixel702',\n",
       "  'pixel703',\n",
       "  'pixel704',\n",
       "  'pixel705',\n",
       "  'pixel706',\n",
       "  'pixel707',\n",
       "  'pixel708',\n",
       "  'pixel709',\n",
       "  'pixel710',\n",
       "  'pixel711',\n",
       "  'pixel712',\n",
       "  'pixel713',\n",
       "  'pixel714',\n",
       "  'pixel715',\n",
       "  'pixel716',\n",
       "  'pixel717',\n",
       "  'pixel718',\n",
       "  'pixel719',\n",
       "  'pixel720',\n",
       "  'pixel721',\n",
       "  'pixel722',\n",
       "  'pixel723',\n",
       "  'pixel724',\n",
       "  'pixel725',\n",
       "  'pixel726',\n",
       "  'pixel727',\n",
       "  'pixel728',\n",
       "  'pixel729',\n",
       "  'pixel730',\n",
       "  'pixel731',\n",
       "  'pixel732',\n",
       "  'pixel733',\n",
       "  'pixel734',\n",
       "  'pixel735',\n",
       "  'pixel736',\n",
       "  'pixel737',\n",
       "  'pixel738',\n",
       "  'pixel739',\n",
       "  'pixel740',\n",
       "  'pixel741',\n",
       "  'pixel742',\n",
       "  'pixel743',\n",
       "  'pixel744',\n",
       "  'pixel745',\n",
       "  'pixel746',\n",
       "  'pixel747',\n",
       "  'pixel748',\n",
       "  'pixel749',\n",
       "  'pixel750',\n",
       "  'pixel751',\n",
       "  'pixel752',\n",
       "  'pixel753',\n",
       "  'pixel754',\n",
       "  'pixel755',\n",
       "  'pixel756',\n",
       "  'pixel757',\n",
       "  'pixel758',\n",
       "  'pixel759',\n",
       "  'pixel760',\n",
       "  'pixel761',\n",
       "  'pixel762',\n",
       "  'pixel763',\n",
       "  'pixel764',\n",
       "  'pixel765',\n",
       "  'pixel766',\n",
       "  'pixel767',\n",
       "  'pixel768',\n",
       "  'pixel769',\n",
       "  'pixel770',\n",
       "  'pixel771',\n",
       "  'pixel772',\n",
       "  'pixel773',\n",
       "  'pixel774',\n",
       "  'pixel775',\n",
       "  'pixel776',\n",
       "  'pixel777',\n",
       "  'pixel778',\n",
       "  'pixel779',\n",
       "  'pixel780',\n",
       "  'pixel781',\n",
       "  'pixel782',\n",
       "  'pixel783',\n",
       "  'pixel784'],\n",
       " 'target_names': ['class'],\n",
       " 'DESCR': \"**Author**: Yann LeCun, Corinna Cortes, Christopher J.C. Burges  \\n**Source**: [MNIST Website](http://yann.lecun.com/exdb/mnist/) - Date unknown  \\n**Please cite**:  \\n\\nThe MNIST database of handwritten digits with 784 features, raw data available at: http://yann.lecun.com/exdb/mnist/. It can be split in a training set of the first 60,000 examples, and a test set of 10,000 examples  \\n\\nIt is a subset of a larger set available from NIST. The digits have been size-normalized and centered in a fixed-size image. It is a good database for people who want to try learning techniques and pattern recognition methods on real-world data while spending minimal efforts on preprocessing and formatting. The original black and white (bilevel) images from NIST were size normalized to fit in a 20x20 pixel box while preserving their aspect ratio. The resulting images contain grey levels as a result of the anti-aliasing technique used by the normalization algorithm. the images were centered in a 28x28 image by computing the center of mass of the pixels, and translating the image so as to position this point at the center of the 28x28 field.  \\n\\nWith some classification methods (particularly template-based methods, such as SVM and K-nearest neighbors), the error rate improves when the digits are centered by bounding box rather than center of mass. If you do this kind of pre-processing, you should report it in your publications. The MNIST database was constructed from NIST's NIST originally designated SD-3 as their training set and SD-1 as their test set. However, SD-3 is much cleaner and easier to recognize than SD-1. The reason for this can be found on the fact that SD-3 was collected among Census Bureau employees, while SD-1 was collected among high-school students. Drawing sensible conclusions from learning experiments requires that the result be independent of the choice of training set and test among the complete set of samples. Therefore it was necessary to build a new database by mixing NIST's datasets.  \\n\\nThe MNIST training set is composed of 30,000 patterns from SD-3 and 30,000 patterns from SD-1. Our test set was composed of 5,000 patterns from SD-3 and 5,000 patterns from SD-1. The 60,000 pattern training set contained examples from approximately 250 writers. We made sure that the sets of writers of the training set and test set were disjoint. SD-1 contains 58,527 digit images written by 500 different writers. In contrast to SD-3, where blocks of data from each writer appeared in sequence, the data in SD-1 is scrambled. Writer identities for SD-1 is available and we used this information to unscramble the writers. We then split SD-1 in two: characters written by the first 250 writers went into our new training set. The remaining 250 writers were placed in our test set. Thus we had two sets with nearly 30,000 examples each. The new training set was completed with enough examples from SD-3, starting at pattern # 0, to make a full set of 60,000 training patterns. Similarly, the new test set was completed with SD-3 examples starting at pattern # 35,000 to make a full set with 60,000 test patterns. Only a subset of 10,000 test images (5,000 from SD-1 and 5,000 from SD-3) is available on this site. The full 60,000 sample training set is available.\\n\\nDownloaded from openml.org.\",\n",
       " 'details': {'id': '554',\n",
       "  'name': 'mnist_784',\n",
       "  'version': '1',\n",
       "  'format': 'ARFF',\n",
       "  'upload_date': '2014-09-29T03:28:38',\n",
       "  'licence': 'Public',\n",
       "  'url': 'https://www.openml.org/data/v1/download/52667/mnist_784.arff',\n",
       "  'file_id': '52667',\n",
       "  'default_target_attribute': 'class',\n",
       "  'tag': ['AzurePilot',\n",
       "   'OpenML-CC18',\n",
       "   'OpenML100',\n",
       "   'study_1',\n",
       "   'study_123',\n",
       "   'study_41',\n",
       "   'study_99',\n",
       "   'vision'],\n",
       "  'visibility': 'public',\n",
       "  'status': 'active',\n",
       "  'processing_date': '2020-11-20 20:12:09',\n",
       "  'md5_checksum': '0298d579eb1b86163de7723944c7e495'},\n",
       " 'url': 'https://www.openml.org/d/554'}"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mnist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "X, y = mnist['data'], mnist['target']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(70000, 784)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(70000,)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "some_digit = X[36000]\n",
    "some_digit_image = some_digit.reshape(28, 28)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(some_digit_image, cmap = matplotlib.cm.binary)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'9'"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y[36000]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 建立测试集和训练集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([14556, 10386,  8694, ..., 54578, 54491, 22141])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将数据集合交叉洗牌，交叉验证时，每个子集合数据分布均匀，有些机器学习算法对训练实例的顺序敏感\n",
    "import numpy as np\n",
    "shuffle_index = np.random.permutation(60000)\n",
    "shuffle_index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, y_train = X_train[shuffle_index], y_train[shuffle_index]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0., 0., 0., ..., 0., 0., 0.],\n",
       "       [0., 0., 0., ..., 0., 0., 0.],\n",
       "       [0., 0., 0., ..., 0., 0., 0.],\n",
       "       ...,\n",
       "       [0., 0., 0., ..., 0., 0., 0.],\n",
       "       [0., 0., 0., ..., 0., 0., 0.],\n",
       "       [0., 0., 0., ..., 0., 0., 0.]])"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 训练一个二元分类器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False, False, False, ...,  True, False, False])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 识别数字9 ，二元分类结果：9或者非9\n",
    "# 创建目标向量\n",
    "y_train_9 = (y_train == '9')\n",
    "y_train_9"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False, False, False, ..., False,  True, False],\n",
       "       [False, False, False, ..., False, False, False],\n",
       "       [False, False, False, ..., False, False, False],\n",
       "       ...,\n",
       "       [False, False,  True, ..., False, False, False],\n",
       "       [False, False, False, ..., False, False, False],\n",
       "       [False, False, False, ...,  True, False, False]])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_9.reshape(20, -1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_test_9 = (y_test == '9')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False])"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# SGD 梯度下降 分类器， 适合非常大的数据集，独立处理训练集数据，一次一个，适合在线学习，\n",
    "from sklearn.linear_model import SGDClassifier\n",
    "\n",
    "sgd_clf = SGDClassifier(random_state = 42)\n",
    "sgd_clf.fit(X_train, y_train_9)\n",
    "\n",
    "sgd_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 性能考核"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  使用交叉验证测量精度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.94095, 0.9246 , 0.9463 ])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 评估分类器比评估回归器要困难得多\n",
    "# 3个折叠，正确率达到 90% 以上\n",
    "\n",
    "from sklearn.model_selection import cross_val_score\n",
    "cross_val_score(sgd_clf, X_train, y_train_9, cv = 3, scoring = 'accuracy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 把每张图都分类成 非9\n",
    "from sklearn.base import BaseEstimator\n",
    "class Never9Classifier(BaseEstimator):\n",
    "    def fit(self, X, y = None):\n",
    "        pass\n",
    "    def predict(self, X):\n",
    "        return np.zeros((len(X), 1), dtype = bool)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False],\n",
       "       [False],\n",
       "       [False],\n",
       "       ...,\n",
       "       [False],\n",
       "       [False],\n",
       "       [False]])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.zeros((len(X), 1), dtype = bool)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.90225, 0.9016 , 0.8987 ])"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "never_9_clf = Never9Classifier()\n",
    "cross_val_score(never_9_clf, X_train, y_train_9, cv = 3, scoring = 'accuracy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "   #  准确率超过89% ，因为9的图像大约只有11%，你猜一张图不是9， 89%的时间都是正确的\n",
    "   #  这说明准确率无法成为分类器的首要性能指标，特别是当你处理偏科数据集， 某些类比其他类更为频繁"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  混淆矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 评估分类器性能的更好方法是混淆矩阵\n",
    "# A类别实例被分为B类别次数\n",
    "# 想要知道分类器将数字3和数字9混淆多少次，通过混淆矩阵的9行3列\n",
    "\n",
    "from sklearn.model_selection import cross_val_predict\n",
    "\n",
    "y_train_pred = cross_val_predict(sgd_clf, X_train, y_train_9, cv = 3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 与 cross_val_score 相比"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "   * 同样执行交叉验证\n",
    "   * 返回的不是评估分数，是每个折叠的预测\n",
    "   * 每一个实例在模型预测时使用的数据，在训练期间从未见过"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[52614,  1437],\n",
       "       [ 2326,  3623]], dtype=int64)"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix   # metrics()度量方法 混合矩阵\n",
    "\n",
    "confusion_matrix(y_train_9, y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 行表示实际类别，列表示预测类别\n",
    "# 第一行 第一列 51569 被正确的分为 非 9 ，真负类\n",
    "# 第一行 第二列 2482 被错误的分类成 9 ，假正类\n",
    "# 第二行 第一列 1581 张 被错误的分为 非 9 ， 假负类\n",
    "# 第二行 第二列 4368 张 被正确的分在了 9 ，真正类\n",
    "\n",
    "# 这种衡量方式太复杂，可以用更简单的指标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[54051,     0],\n",
       "       [    0,  5949]], dtype=int64)"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_perfect_predictions = y_train_9\n",
    "confusion_matrix(y_train_9, y_train_perfect_predictions)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##  正类预测的准确率 被称为分类器的精度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 精度 = TP/(TP +FP)  TP是真正类的数量，FP是假正类的数量\n",
    "# 召回率TPR = TP/(TP + FN)  检测正类实例的比例 FN是假负类的数量"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 精度和召回率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7160079051383399"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import precision_score, recall_score\n",
    "\n",
    "precision_score(y_train_9, y_train_pred) # 4368 / 4368 + 1581"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6090099176332157"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(y_train_9, y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 说明 检测一张图的时候，只有60%的概率是准确的，而且只有73%的数字9 被它检测出来\n",
    "# 精度和召回率合成单一指标，成为 F1 分数，谐波平均值\n",
    "# 平均值平等对待所有的值，谐波平均值会给予较低值更高的权重，只有召回率和精度都很高时，才能获得较高的F1分数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "# F1 = 2/ (1/precision) +(1/recall) = 2 * (precision * recall)/(precision + recall) = TP/(TP + ((FN+FP)/2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6581887546552819"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import f1_score\n",
    "f1_score(y_train_9, y_train_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "# F1分数对那些具有相近精度和召回率 分类器更有利，这不一定符合你的期望\n",
    "# 有时候你更关心精度，有时你能关心召回率\n",
    "# 训练一个分类器 检测儿童可以放心观看的视频，你可能要求拦截了很多好的视频，低召回率，保留下来的都是安全的视频，高精度\n",
    "# 不能同时增加精度并减少召回率，反之亦然"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 精度/召回率权衡"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "   * SGDClassifier对每个实例基于决策函数计算一个分值，大于阀值为正类，否则为负类\n",
    "   * 中间阀值右侧找到4个真正类 真9 ， 一个假正类 6， 精度为 4/9 80%\n",
    "   * 在所有的6个 真正的9 中，分类器找到了4个，召回率为 4/6 67%\n",
    "   * 提高阀值，向右移动，精度提高，召回降低\n",
    "   * 反之阀值降低，召回提高，精度降低\n",
    "   * SKlearn不可以直接设置阀值，可以访问决策分数，\n",
    "   * SGDClassifier 默认阀值为0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 如何设置阀值\n",
    "\n",
    "# 用predict_proba得到每个实例属于正类的概率，然后对概率切一下。以LogisticRegression逻辑回归分类器为例\n",
    "# clf = LogisticRegression()\n",
    "# clf.fit(X_train, y_train)\n",
    "# pred_proba = clf.predict_proba(X_test)[:, 1]\n",
    "# threshold = 0.75  # 阀值设置为0.75\n",
    "# pred_label = pred_proba > threshold\n",
    "\n",
    "# pred_proba是每个实例为真的概率\n",
    "# 假设阈值是0.75\n",
    "# pred_label里True就是概率大于0.75的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([-2031.74508897])"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 返回决策值decision_function（若无逻辑回归分类器可以使用此方法返回数值）\n",
    "y_scores = sgd_clf.decision_function([some_digit])\n",
    "y_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "#得到负值预测为假"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "threshold = 0\n",
    "y_some_digit_pred = (y_scores > threshold)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False])"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_some_digit_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False])"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 提高阀值可以降低召回率，提高阀值到200000，就错过了这个图\n",
    "threshold = 200000\n",
    "y_some_digit_pred = (y_scores > threshold)\n",
    "y_some_digit_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 如何决定使用什么阀值与需求相关\n",
    "# 返回决策值，而不是预测结果\n",
    "y_scores = cross_val_predict(sgd_clf, X_train, y_train_9, cv = 3,\n",
    "                             method = 'decision_function')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000,)"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 有了y_scores，可以计算所有可能的阀值的精度和召回率\n",
    "y_scores.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import precision_recall_curve\n",
    "\n",
    "precisions, recalls, thresholds = precision_recall_curve(y_train_9, y_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用matplotlib 绘制精度和召回相对于阀值的函数图\n",
    "def plot_precision_recall_vs_threshold(precisions, recalls, thresholds):\n",
    "    plt.plot(thresholds, precisions[:-1], 'b--', label = 'Precision', linewidth = 2)\n",
    "    plt.plot(thresholds, recalls[:-1], 'g-', label = 'Recall', linewidth = 2)\n",
    "    plt.xlabel('Threshold', fontsize = 16)\n",
    "    plt.legend(loc = 'upper left', fontsize = 16)\n",
    "    plt.ylim([0, 1])\n",
    "\n",
    "plt.figure(figsize = (8, 4))\n",
    "plot_precision_recall_vs_threshold(precisions, recalls, thresholds)\n",
    "plt.xlim([-700000, 700000])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAf0AAAF5CAYAAACV7fNGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAqUklEQVR4nO3deZgU1b3/8c8XGLZhl2FTRxG3HyCgjLgBdzASN4hRURETvWoucYlxi8G4JFxDEi/BJWpQMBg1Koq4RNxClBBxF0QUccMFEDdUBAcQGOb8/jg9qe6hZ6Znpruql/frefrpU9Wnq79pJ3y6qk6dMuecAABA/msWdQEAACAchD4AAAWC0AcAoEAQ+gAAFAhCHwCAAkHoAwBQIAh9AAAKROihb2bdzWxBHa8XmdmjZva8mZ0RZm0AAOSzUEPfzDpLukNScR3dzpO00Dl3sKRRZtY+lOIAAMhzYe/pb5N0kqT1dfQplzQr1n5eUlmGawIAoCC0CPPDnHPrJcnM6upWLGl1rL1eUveaHcxsvKTxktSiRefBlZW7SZL23VdqxigFAECeW7Ro0ZfOuZKGvi/U0E9RhaQ2ktZJahdbTuCcmy5puiSVlZW5d95ZqIoK6d//ltpzMgAAkOfMbEVj3peN+8WLJA2NtQdK+ii6UgAAyB+R7umb2aGS+jrnbopbfYekx81smKS+kl6KpDgAAPJMJHv6zrny2PO8GoEv59wKSSMlPSfpMOfctvArBAAg/2TjOX055z5RMIIfAACkQTae0wcAABlA6AMAUCAIfQAACgShDwBAgciL0K+ITd+zdm20dQAAkM3yIvSr3XBD1BUAAJC98ir0r7lGmsWFfgAAJJVXoS9JJ50UdQUAAGSnvAj9I4+MugIAALJfXoR+p05RVwAAQPbLi9CP16NH1BUAAJCd8iL0v/oqaPfsGV0dAABks7wI/XfeCdrO+ecvvpCeey6aegAAyEZZeZe9hlqxImhXVfnn7t3989tvS3vtFX5NAABkm7zY04/34YfSDjsEyx9/HF0tAABkk7zY04/37beJy23aRFMHAADZJi/29H/zm6grAAAg++VF6E+cKL38cvLXKitDLQUAgKyVF6Fflxkzoq4AAIDskDehv9tuydffeac0d660ebO/nO+mm6Q99pBmzw63PgAAopY3oR8/Yv+ggxJfO/xw6eqrpZYtpfPOk5Yvl044Qfruu3BrBAAgSnkT+vEGDJCOOy5x3cSJ25/ff/HF0EoCACByeRX65eX+efx46cor6+8/YoS0337SI49ktCwAALJCXoX+E09I77/vg7x//+R9brghcXnxYumYY6TWraVFizJfIwAAUcmr0G/dOhjQ1yLJtENTpvhz+sXF27+2ebNUViaddppk5h9ffJHZegEACFNehX5NQ4cmLp98sn9+4YXab8F7551Bu3r+fgAA8kFeh/68eVJFhTRokPQ//yP16uXX77OP9Omnfp7+NWukI46ofRtmwZ376rNtm/TUU/49rVpJb7yReNtfAACilNehX1TkD+UvXixNn77967vuKnXt6scC/PWvwfqa1/DPm1f/Z33yidS2rTRypF/essVfRdC1q/TRR439XwAAQPrkdeg3xGmnSXfdJb37rr/c77DDgtfuuKPu9773nnTIIT7ok+ndWzrjDOnMM6WddgrGDFQ/jj1Wuvxy/4PhkUdSP7IAAEBDmMvxhCkrK3MLFy7MyLabN5eqqnz7/POlYcN8QDeL/VTautVf///73/vlHXeUrr9eGjJE+u1vpb/8pfGfXVGRfMAhAABmtsg5V9bg9xH6tTvrLGnatMR1//ynPwrw4YfSgQcGI/y//33pgQekdu2CvvPmSd/7XtPrGDXKj0sYM8b/GDjkkKZvEwCQuwj9DPj002DwX7wxYxLP+w8Y4O/y16pV8u28+qr01lvS2LF+VsD4flVV0urVUocO/tTCkCGp1TZ2rD+qEH+FgXPSsmX+KMN9923/nvffl+65x9cwcWJqnwMAyD6Efob87//6vfvnnkv++pw50tFH+3Pz6fDhh7XfPCiZN9+UnnlGeuwx6dFHG/55p5+eOIhRkq66KrUZDQEA0SD0M2zpUn+pX7z3329YQDeWc9L990t9+vgxBatWpf7eQYOk115r/Gc/8UTdlzQCAMLX2NBn9H6K+veX7r7bH4afOdMHcRiBL/mjCCeeKA0eLK1c6QcQJjNxop8XwLngsXixtGmT9PDDvn377cnfe/zx0n/91/brjzzSf/5RR/nnl17y25g1y89LAADIHezp56iNG/0h/f79/VwAJSUN30b1D4NmNX76vfiidNll0r/+Vf825s3zNy6K3+by5VK3blLHjg2vCQBQPw7vI+3OOUe6+eambyfH/8QAIOtweB9pN3Vq4qmC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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "def plot_precision_vs_recall(precisions, recalls):\n",
    "    plt.plot(recalls, precisions, 'b-', linewidth = 2)\n",
    "    plt.xlabel('召回', fontsize = 16)\n",
    "    plt.ylabel('精度', fontsize = 16)\n",
    "    plt.axis([0, 1, 0, 1])\n",
    "\n",
    "plt.figure(figsize = (8, 6))\n",
    "plot_precision_vs_recall(precisions, recalls)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 通过选择阀值来实现最佳的精度/召回率权衡"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 目标设定为90%的精度，阀值大概在30000左右 , 设置了阀值为30000\n",
    "y_train_pred_90 = (y_scores > 30000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\stefa\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1221: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 due to no predicted samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, msg_start, len(result))\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0.0"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "precision_score(y_train_9, y_train_pred_90)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.0"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(y_train_9, y_train_pred_90)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "  * 总结\n",
    "  * 第一次运行获得了一个100%精度的分类器（第二次运行提示没有预测数据？），但如果召回率太低，精度再高，也没有用\n",
    "  * 如果工作中，需要99%的精度，你应该回应，召回率应该是多少？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ROC 曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 本质是 真正类率tpr和假正类率fpr（错误的分为正类的负类实例比例）\n",
    "# 与召回/精度曲线非常相似"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import roc_curve\n",
    "fpr, tpr, thresholds = roc_curve(y_train_9, y_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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WIR+tCdwoV9QUMBtt91G165dGTt2LCNHjgzYc4uIiByNsLimH6iW/urVq+nRowdPPfUUa9euDchzioiIVJfwaOnX8Nr71lpefvllbrjhBhISEnj//fc555xzavQ5RUREqltYtPRresOd9PR0rrjiCnr06EFGRoYCX0REQlJYtPRtDc3Y27VrFykpKZxyyinMmTOHM888E4/HUzNPJiIiUsPCoqW/PaugWs/n8/l4+OGHadWqFcuWLQPgrLPOUuCLiEhIC4uWfoemdartXDt27GD06NHMnTuXiy66iOOPP77azi0iIuKmsGjpx1TThjtz584lNTWVzz77jOeee4633nqL5OTkajm3iIiI28KipR9XTaH/1Vdf0bBhQ+bPn0/Hjh2r5ZwiIiLBIixa+kezte769ev58ssvAZgwYQLLli1T4IuISFgKi9A/0nn6s2bNokuXLowbNw6v14vH46FWLXfW8RcREalpYRH6nqiq/Ri5ublcfvnlXHrppXTq1Ik5c+ZoZL6IiIS9sLimX5WW/q5duzj99NP56aefmDBhAvfccw/R0WHxMoiIiBxWWKRdVVbka9iwIWeccQbPPvssZ5xxRg1WJSIiElzConu/opb+nj17GDFiBOvXr8cYo8AXEZGIFBah7z3MOrwLFy4kNTWVt95668DqeiIiIpEoLEI/v8j7u/tKSkqYPHky/fv3JyEhgcWLFzN06FAXqhMREQkOYRH6TerG/+6+qVOn8re//Y2RI0eyfPlyunbt6kJlIiIiwSMsBvKVvaafk5ND7dq1ue666zjuuOO46KKLXKxMREQkeIRFS98TFUVBQQHXX3893bt3Jzc3l8TERAW+iIhIGQEPfWPMS8aYRcaYCUdzTFnbNq6lR48ePP300wwePFjz7kVERA4ioKFvjPkT4LHW9gaaGWPaHskxZXnzsrht5Dls3bqV999/n6lTpxIXF1czP4CIiEgIC3RLvx/wpv/2AuC0IzzmAF9+Ju07dyMjI4NzzjmnmsoUEREJP4HuB08EtvhvZwHHH8kxxpirgKv8XxZmLP1iVfPmzau5VCmnIbDb7SLCnF7jmqfXuObpNQ6MdkfyTYEO/RygdBu72hy8p6HCY6y1zwPPAxhj0q21adVfqpSl17nm6TWueXqNa55e48AwxqQfyfcFunt/Ob9216cCG4/wGBEREamiQLf0ZwOf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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "def plot_roc_curve(fpr, tpr, label = None):\n",
    "    plt.plot(fpr, tpr, linewidth = 2, label = label)\n",
    "    plt.plot([0, 1], [0, 1], 'k--')\n",
    "    plt.axis([0, 1, 0, 1])\n",
    "    plt.xlabel('假正类率', fontsize = 16)\n",
    "    plt.ylabel('真正类率', fontsize = 16)\n",
    "\n",
    "plt.figure(figsize = (8, 6))\n",
    "plot_roc_curve(fpr, tpr)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9448041418979606"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#  好的分类器应远离中间虚线\n",
    "# 计算曲线下面积AUC，虚线是随机分类0.5到1\n",
    "from sklearn.metrics import roc_auc_score\n",
    "roc_auc_score(y_train_9, y_scores)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "   * 召回率TPR越高，分类器的假正类FPR就越多\n",
    "   * 虚线表示纯随机分类器的ROC曲线，好的分类器应该远离这条线，偏向左上角（完美值）\n",
    "   * 是使用精度/召回率 PR曲线，还是使用ROC，关键在于 正类非常少或者更关注假正类（9）而不是假负类，选择PR，反之ROC\n",
    "   * 例如：前面例子ROC曲线很不错是因为跟负类 非9 相比， 正类 数据9 数量真的很少"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 训练随机森林分类器，比较SGD分类器的ROC曲线和ROC AUC分数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "   * 获取训练集中每个实例的分数\n",
    "   * RandomForestClassifier 没有descision_function(),但是拥有predict_proba()方法，sklearn中分类\n",
    "   器都有这两个中的一个\n",
    "   * predict_proba返回一个矩阵，每行一个实例，每列代表一个类别的概率，比如这个图片 70%是9"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "forest_clf = RandomForestClassifier(n_estimators = 10, random_state = 42)\n",
    "y_probas_forest = cross_val_predict(forest_clf, X_train, y_train_9, cv = 3,\n",
    "                                    method = 'predict_proba')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1. , 0. ],\n",
       "       [1. , 0. ],\n",
       "       [1. , 0. ],\n",
       "       ...,\n",
       "       [0.3, 0.7],\n",
       "       [1. , 0. ],\n",
       "       [1. , 0. ]])"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_probas_forest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 绘制ROC曲线，需要决策值不是概率，直接使用正类的概率作为决策值：\n",
    "y_scores_forest = y_probas_forest[:, 1] \n",
    "fpr_forest, tpr_forest, thresholds_forest = roc_curve(y_train_9, y_scores_forest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0. , 0. , 0. , ..., 0.7, 0. , 0. ])"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_scores_forest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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60+dUfCzfP01rFnjrK15jz179nDzzTfToUMHTpw4gVJKCr4QQliYJWbk690H7rnH7BSeQ2vNvHnzaNy4MQcPHuSTTz4hMjLS7FhCCCFczBJTqnW5F9rLtV6KxWaz0a9fPz766CPatGnDwoULZYS+EEJ4CUsUfVF8vr6+VKxYkYkTJ/LCCy/g6+trdiQhSp3k5GSOHz9ORkaG2VGEl/H396dixYouG0htiaK/8zdoEAFXX212ktLJbrczbdo0WrZsSbNmzZg2bZrZkYQotZKTkzl27BhVq1YlODgYpZTZkYSX0FqTmppKYqIxh50rCr8ljumPHwefflr0et7o2LFj3HHHHQwfPpxFixaZHUeIUu/48eNUrVqVkJAQKfjCrZRShISEULVqVY4fv2QGeqewREu/7o1QrZrZKUqfFStW0LdvX5KSkpg5cyaDBw82O5IQpV5GRgbBwcFFryiEiwQHB7vs0JIliv7ECdBZBvJdZPXq1XTs2JEbb7yRVatWUb9+fbMjCeExpIUvzOTK3z9LdO+LHDabDYA2bdrw+uuvs2XLFin4QgghACn6lrJ48WJuvPFGjh49iq+vL//3f/9HSEiI2bGEECY7efIkPXv2JCIigooVKzJmzJjs5y5cuMCQIUMoV64clSpVYvLkydnPjR8/HqUUPj4+REZG0rVrV/bs2WPGWxBOYomi37MXfPml2SnMk5KSwsCBA+nevTvly5eX04yEEBfp1q0bhw8f5vPPP+eFF17glVdeYfHixQA8+eSTLF26lIULFzJhwgReeuklPv/88+zXVqlShY0bN/LWW2+xY8cOWrRowQG5lrnn0lp79C2gck0dcsNh/cUX2islJCToOnXqaKWUHjVqlE5PTzc7khAe7ffffzc7glPt27dPA3rr1q3Zy+677z59xx136MOHD2tfX1+9aNGi7Of69eunW7durbXWety4cbpatWrZzx05ckSHhYXpIUOGuCu+1yrq9xCI05dRMy0xkG/hR3BXtNkpzDF58mSSkpJYuXIl7du3NzuOEKKU+ffffwGjiz/Lq6++SlJSEqtXr8Zms9GhQ4fs52666SaWLVuW77YqV67M3XffXeDzovSzRPd+UCD4+5udwn3+/fdfDh48CMC7775LQkKCFHwhRL7q1avHNddcQ//+/fniiy/QWlOzZk0aN27M7t27CQsLo0KFCtnr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atXSzZs318uXL9cTJkzQ/v7+ulq1atnbv/322/UNN9yglyxZot977z1dpkwZPXny5Ox9h4WF6c8//1xHR0drPz8/PXfuXN2xY0fduXPnIt9fVr61a9cWuM6jjz6qK1eurBctWqQXLVqkK1WqpAcNGpT9/Nq1azWgBw0apJs0aaLffPNNvWvXruznn3/+eV2pUiW9ePFi/e233+oaNWrobt26ZT8/bNgwHRUVpZcsWaK//vpr3aBBAz1w4ECttdaJiYl6y5Ytety4cbpKlSp6y5YtesuWLToxMbHI91bU7yEQpy+jZlrimP66tcAT7tnXhQsXGD58ODExMQwYMIDevXu7Z8dCCNNcN3Kp2REA+GfKnZf1OqVU9v2YmBjmzJkDGI2+nj170qpVK+rUqUNmZiYzZsxg06ZN9O/fP/s1devW5e233wZg1KhRdO/eHTCuI7J3716+++47atSoQceOHdm2bRtbt24F4Oeff2bFihVs27aNRo0aAcZU5GPGjOHZZ58FoEePHtx///0sWbKESpUq0b9/f/bt28f69euL/f7atm170eN9+/Zx3XXXceDAAebMmcPnn39Oly5dAAgMDOTBBx/kxRdf5Nprr81+za5du/jpp58uGouVmprK9OnT+e9//0vXrl0BOHnyJI8++igXLlwgKCiIAwcOEB0dzT333ANArVq1+PfffwGIiooiKiqKnTt3EhAQUCrGHViie79VK/fsZ9euXTRr1ox33nmHP//80z07FUKIK7Rt2zaWLl2KUooRI0ZkFzulFF27dmXZsmXceeedVKpUiXXr1pGamnrR6wcNGpR9v0KFCmRmZgKwd+9eypcvT40aNbKfb5XrD/K2bdsoV65cdsEHo0s/JSUl+29olSpVsrPkvl8Ss2fPZtu2bdm3qKgoALZv347dbqdNmzYX7d9ut7Njx46LtvHGG29cMvj6zz//JC0tjf79+2d3zffv35+MjAwOHDgAwCOPPMLq1atp0aIFI0aMIDExkRYtWpQovztZoqWf50ue02mtmTt3LsOGDSMkJISlS5dyxx13uHanQohS43Jb2KVFo0aNaNSoEffccw+vvvoq3bp1A+Ds2bPExMRQsWJFevbsyZgxY5g5c+Ylry/o9De73Y6Pz8VtR19f34se5y3gWY+147i+M9SsWfOiLxZ55c5Q0P6bNGlyyeuy1vnf//5HzZo1L3ou64vT3XffzZ49e1i+fDnr16+nc+fOPP7440yfPv1y3orLWaKl72pxcXE88sgjNGvWjISEBCn4QgiPNGrUKLZu3crKlSsBWL16Nfv27eO7777jySef5Oabb863FzNvIc9So0YNTp06ld3qBaNLP0ujRo04c+YMCQk5l0Fdv349oaGh1KpVy1lvq0ANGzbEx8eHdevWXbR/Hx8fGjZsWOTra9asSUBAABcuXMj+4hQaGsrrr7/O6dOnAXj11Vc5ePAgQ4YMYdGiRUyYMIEPPvjgou0EBQVl946YzRIt/WPHgAbO3+6JEyeIjIykSZMmLF++nNtuu63AX34hhCjtmjZtSvv27Zk6dSodOnTIHsE/d+5cGjRowLvvvsuGDRuKPbFNp06duPbaa+nTpw+jR48mPj6ezz//nKpVqwJw66230qFDB7p3786rr77K0aNHGTt2LC+++KJb5gi49tpreeSRR3jssceyD1k8++yzDBw48KLj+QUJCQnhmWeeYfjw4WitqVq1KuPHj+f06dNUrlwZgD179rBo0SJefvllgoOD+frrry/5/GJiYjh69Chz5syhTp06/Pjjj4wcOdL5b7g4Lmf0X2m6BVSuqW9/xLmj9202m546daoOCQnRmzdvduq2hRClm5VH72ut9Zo1azSgt2zZorXW+sUXX9QVKlTQZcuW1f369dODBw/WNWvW1JmZmdmj4/ft25f9+qzR7ll27dql27Rpo0NCQnRMTIx+/vnnLxq9/++//+qePXvq0NBQXbFiRT1u3Dhts9m01sbo/XHjxmmtte7Xr5/u16+f1lrrcePG6datWxf5/oozev/ChQt66NChOjw8XIeHh+uhQ4fqCxcuFPh+8kpPT9fDhw/XkZGROiwsTN977716//79F72//v3764oVK+qQkBDdqlUrvX379ku2M2vWLH311VdrPz8/Xb9+/SLfm6tG7yvtxOMqZgisUkv3GPgD8yZWccr2jh07Rt++fVmxYgUPPPAAs2fPJiIiwinbFkKUfrt27aJu3bpmxxBerqjfQ6VUvNa6xKcDWOKYfreuztnOihUriI6O5ocffuC9997jf//7nxR8IYQQlmGJY/rO8ssvv3DVVVexevVq6tWrZ3YcIYQQwqks0dK/En///Xf2aNPRo0ezZcsWKfhCCCEsyRJF/4svL+91ixYtolGjRgwc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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize = (8, 6))\n",
    "plt.plot(fpr, tpr, 'b:', linewidth = 2, label = 'SGD')\n",
    "plot_roc_curve(fpr_forest, tpr_forest, 'Random Forest')\n",
    "plt.legend(loc = 'lower right', fontsize = 16)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9865189205345084"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# RandomForest 比SGD 好很多，ROC AUC的分数也高很多\n",
    "roc_auc_score(y_train_9, y_scores_forest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9728283244133388"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 精度和召回率 也很高\n",
    "y_train_pred_forest = cross_val_predict(forest_clf, X_train, y_train_9, cv = 3)\n",
    "precision_score(y_train_9, y_train_pred_forest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7944192301227097"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(y_train_9, y_train_pred_forest)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "   * 总结\n",
    "     *  选择合适的指标利用交叉验证来对分类器进行评估\n",
    "     *  选择满足需求的精度/召回率权衡\n",
    "     *  使用ROC曲线和ROC AUC分数比较多个模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 多类别分类器\n",
    "   * 尝试9 之外的检测\n",
    "   * 多类别分类器 区分两个以上的类别\n",
    "   * 随机森林和朴素贝叶斯可以直接处理多个类别\n",
    "   * 支持向量机svm和线性分类器只可以处理二元分类器"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  解决方案\n",
    "  * 将数字图片分类0到9，训练10个二元分类器，每个数字一个，检测一张图片时，获取每个分类器的决策分数，哪个最高属于哪个，称为一对多OvA\n",
    "  * 为每一对数字训练一个二元分类器，区分0，1 区分0，2 区分1，2 称为一对一OvO策略，存在N个类别，需要N*（N-1）/2个分类器，最后看哪个类别获胜最多\n",
    "    \n",
    "### 优缺点\n",
    "  * OvO 只需要用到部分训练集对其必须区分两个类别进行训练\n",
    "  * 对于较小训练集合OvO比较有优势， 大训练集合 OvA 速度快，所以OvA更常用，比如svm 在数据规模扩大时表现糟糕\n",
    "  * sklearn 检查到使用二元分类算法进行多类别分类任务，会自动运行OvA，SVM分类器除外"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['3'], dtype='<U1')"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sgd_clf.fit(X_train, y_train)\n",
    "sgd_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-30653.14419744, -18550.06008716, -15177.94514654,\n",
       "           310.14589642,  -3586.18947657,  -3409.99412299,\n",
       "        -22703.26202696, -15575.85282953,  -1167.92895916,\n",
       "         -2536.22132602]])"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 内部实际上训练了10个二元分类器，获得图片的决策分数，然后选择了分数最高的类别\n",
    "# 返回10个分数，每个类别1个\n",
    "some_digit_scores = sgd_clf.decision_function([some_digit])\n",
    "some_digit_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.argmax(some_digit_scores)  #找出最大的值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], dtype='<U1')"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 目标类别列表会存储在classes_这个属性中，按值大小排列，\n",
    "sgd_clf.classes_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'3'"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sgd_clf.classes_[np.argmax(some_digit_scores)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['9'], dtype=object)"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用OvO策略，一对一或者一对多\n",
    "from sklearn.multiclass import OneVsOneClassifier\n",
    "ovo_clf = OneVsOneClassifier(SGDClassifier(max_iter = 9, tol = -np.infty, random_state = 42))\n",
    "ovo_clf.fit(X_train, y_train)\n",
    "ovo_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "45"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(ovo_clf.estimators_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['9'], dtype=object)"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用随机森林\n",
    "forest_clf.fit(X_train, y_train)\n",
    "forest_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0. , 0. , 0. , 0. , 0.1, 0. , 0. , 0. , 0. , 0.9]])"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 随机森林直接将实例分为多个类别，调用predict_proba()可以获得分类器将每个实例分类为每个类别的概率列表\n",
    "forest_clf.predict_proba([some_digit])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 评估分类器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.8604 , 0.87895, 0.8723 ])"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用交叉验证评估SGD的准确率\n",
    "cross_val_score(sgd_clf, X_train, y_train, cv = 3, scoring = 'accuracy')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.8989 , 0.89385, 0.9029 ])"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将输入进行简单缩放，可以得到准确率 90 %以上\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "scaler = StandardScaler()\n",
    "X_train_scaled = scaler.fit_transform(X_train.astype(np.float64))\n",
    "cross_val_score(sgd_clf, X_train_scaled, y_train, cv = 3, scoring = 'accuracy')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 错误分析\n",
    "   * 项目流程\n",
    "    * 探索数据准备的选项\n",
    "    * 尝试多个模型\n",
    "    * 选择最佳模型并用GridSearchCV对参数进行微调\n",
    "    * 尽可能自动化\n",
    "\n",
    "   * 确定了一个相对合适的模型，进一步优化，分析其错误类型\n",
    "    * 查看混淆矩阵\n",
    "    * 使用cross_val_predict()进行预测\n",
    "    * 调用confusion_matrix()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[5576,    0,   17,    3,    8,   44,   31,    6,  237,    1],\n",
       "       [   0, 6408,   45,   18,    3,   40,    5,    9,  206,    8],\n",
       "       [  23,   24, 5260,   81,   72,   26,   63,   38,  362,    9],\n",
       "       [  27,   19,  115, 5225,    0,  186,   22,   46,  427,   64],\n",
       "       [  11,   14,   50,    9, 5218,    9,   30,   23,  331,  147],\n",
       "       [  28,   16,   30,  155,   47, 4457,   74,   15,  532,   67],\n",
       "       [  31,   16,   58,    1,   40,   90, 5530,    6,  146,    0],\n",
       "       [  20,   11,   49,   21,   52,   13,    4, 5696,  194,  205],\n",
       "       [  15,   63,   44,   93,    2,  114,   29,    8, 5447,   36],\n",
       "       [  24,   20,   29,   60,  117,   35,    1,  167,  400, 5096]],\n",
       "      dtype=int64)"
      ]
     },
     "execution_count": 78,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_pred = cross_val_predict(sgd_clf, X_train_scaled, y_train, cv = 3)\n",
    "conf_mx = confusion_matrix(y_train, y_train_pred)\n",
    "conf_mx"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用matplotlib的matshow 函数来查看混淆矩阵的图像表示\n",
    "plt.matshow(conf_mx, cmap = plt.cm.gray)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 看起来不错，大多数图片都在主对角线上，说明它们被正确分类\n",
    "# 数字5 看起来比较暗，说明数字5图片较少且分类器在数字5上执行效果不如其他数字上好\n",
    "# 假设把焦点放在错误上，为取得错误率，而不是错误绝对值，需要将混淆矩阵中每个值除以相应类别中的图片数量\n",
    "\n",
    "row_sums = conf_mx.sum(axis = 1, keepdims = True)\n",
    "norm_conf_mx = conf_mx / row_sums"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 用0填充对角线 只保留错误，重新绘制\n",
    "np.fill_diagonal(norm_conf_mx, 0)\n",
    "plt.matshow(norm_conf_mx, cmap = plt.cm.gray)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 每行代表实际类别，每列代表预测类别\n",
    "# 8，9列比较亮，说明许多图片被错误的分类为数字8，9\n",
    "# 类别8，9行也偏亮，说明数字8和9经常会跟其他数字混淆\n",
    "# 有些很暗，比如行1，大多数数字1都被正确的分类，一些和8混淆\n",
    "# 5和3是错误最多的"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  结论\n",
    "   * 改进数字8和9的分类\n",
    "   * 修正数字3和5的混淆"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 如何优化分类器\n",
    "   * 尝试多收集这些数字的训练集\n",
    "   * 开发一些新特征来改进分类器\n",
    "   * 优化分类器算法\n",
    "   * 使用pillow或opencv对图片预处理，让显示模型更突出\n",
    "   * 分析单个错误"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_digits(instances, images_per_row = 10, **options):\n",
    "    size = 28\n",
    "    images_per_row = min(len(instances), images_per_row)\n",
    "    images = [instance.reshape(size,size) for instance in instances]\n",
    "    n_rows = (len(instances) - 1) // images_per_row + 1\n",
    "    row_images = []\n",
    "    n_empty = n_rows * images_per_row - len(instances)\n",
    "    images.append(np.zeros((size, size * n_empty)))\n",
    "    \n",
    "    for row in range(n_rows):\n",
    "        rimages = images[row * images_per_row : (row + 1) * images_per_row]\n",
    "        row_images.append(np.concatenate(rimages, axis = 1))\n",
    "    image = np.concatenate(row_images, axis = 0)\n",
    "    plt.imshow(image, cmap = matplotlib.cm.binary, **options)\n",
    "    plt.axis('off')\n",
    "\n",
    "\n",
    "# 查看数字3和数字5的例子\n",
    "cl_a, cl_b = '3', '5'\n",
    "X_aa = X_train[(y_train == cl_a) & (y_train_pred == cl_a)]\n",
    "X_ab = X_train[(y_train == cl_a) & (y_train_pred == cl_b)]\n",
    "X_ba = X_train[(y_train == cl_b) & (y_train_pred == cl_a)]\n",
    "X_bb = X_train[(y_train == cl_b) & (y_train_pred == cl_b)]\n",
    "\n",
    "plt.figure(figsize = (8,8))\n",
    "plt.subplot(221); \n",
    "plot_digits(X_aa[:25], images_per_row = 5)\n",
    "plt.subplot(222); \n",
    "plot_digits(X_ab[:25], images_per_row = 5)\n",
    "plt.subplot(223);\n",
    "plot_digits(X_ba[:25], images_per_row = 5)\n",
    "plt.subplot(224); \n",
    "plot_digits(X_bb[:25], images_per_row = 5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 左侧两个是被分类为3的图片\n",
    "# 右侧两个是被分类为5的图片\n",
    "# 大多数错误分类的图片看起来还是非常明显的错误\n",
    "# 原因：SGD是一个线性模型，它所做就是为每个像素分配一个各个类别的权重，当它看到新的图像，将加权后的像素强度汇总，从而得到一个分数进行分类\n",
    "# 数字3和5在一部分像素位上有区别，所以分类器很容易将其弄混\n",
    "# 通过上面图像，如果书写3 的连接点左移，分类器可能将其分类为数字5，这个分类器对图像位移和旋转敏感\n",
    "# 减少混淆的方法之一，就是对图像进行预处理，确保位于中心位置并且没有旋转"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 多标签分类器\n",
    "   * 为每个实例产生多个类别 ，例如 照片识别多个人脸\n",
    "   * 分类器经过训练可以识别小红，小白，小军，一张照片 里有 小红，小白\n",
    "   * 经过分类器，应该输出[1,1,0]， 是小红，是小白，不是小军\n",
    "   * 输出多个二元标签的分类系统称为多标签分类系统"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KNeighborsClassifier()"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "\n",
    "y_train = y_train.astype(int)   # 训练集改为整数类型 后续\n",
    "y_train_large = (y_train >= 7)\n",
    "y_train_odd = (y_train % 2 == 1)\n",
    "y_multilabel = np.c_[y_train_large, y_train_odd]\n",
    "\n",
    "knn_clf = KNeighborsClassifier()\n",
    "knn_clf.fit(X_train, y_multilabel)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ True,  True]])"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# knn支持多标签分类，不是所有的分类器都支持\n",
    "knn_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# # 评估多标签分类器方法很多，方法之一就是测量每个标签的F1分数，或者其他二元分类器指标，然后简单平均\n",
    "# y_train_knn_pred = cross_val_predict(knn_clf, X_train, y_multilabel, cv = 3)\n",
    "# f1_score(y_multilabel, y_train_knn_pred, average = 'macro')\n",
    "0.977090"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 上面假设了所有标签都同等重要，也可以给每个标签设置一个权重（该目标标签实例的数量），设置average = 'weighted' 加权值\n",
    "# macro计算二分类metrics的大规模均值 为每个类给出相同权重的分值 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 多输出分类器\n",
    "   * 例子：构建一个系统去除图片中的噪声，输入一张有噪声的图片，它将输入一张干净的数字图片，分类器输出是多个标签，一个像素一个标签，每个标签多个值0到255¶"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 增加噪声，目标将图片还原为原始图片 创建训练集和测试集(可用于破解校验码)\n",
    "noise = np.random.randint(0, 100, (len(X_train), 784))\n",
    "X_train_mod = X_train + noise\n",
    "noise = np.random.randint(0, 100, (len(X_test), 784))\n",
    "X_test_mod = X_test + noise\n",
    "y_train_mod = X_train\n",
    "y_test_mod = X_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "some_index = 5500\n",
    "plt.subplot(121);plt.imshow(X_test_mod[some_index].reshape(28, 28), cmap = matplotlib.cm.binary)\n",
    "plt.subplot(122);plt.imshow(y_test_mod[some_index].reshape(28, 28), cmap = matplotlib.cm.binary)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [],
   "source": [
    "knn_clf.fit(X_train_mod, y_train_mod)\n",
    "clean_digit = knn_clf.predict([X_test_mod[some_index]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(clean_digit.reshape(28, 28), cmap = matplotlib.cm.binary)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.9"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "423.2px",
    "left": "67px",
    "top": "233.8px",
    "width": "266.188px"
   },
   "toc_section_display": true,
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
